﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoDatos.Modulos.ClasesAccesoDatos;
using Modelo.Modulos.ClasesModelado;

namespace Logica.Modulos.ClasesLogica
{
   public class TareasLog:Negocio
    {

       public void InsertarTarea(TareasMod obj)
       {
           try
           {
               this.IniciarTransaccion();

               TareasBD objBD = new TareasBD();

               objBD.InsertarTarea(this.comando, obj);

               this.ConfirmarTransaccion();
           }
           catch (Exception exc)
           {
               this.DeshacerTransaccion();
               throw exc;
           }
       }

       public List<TareasMod> ConsultarTareas()
       {
           try
           {
               this.AbrirConexion();

               TareasBD objBD = new TareasBD();

               List<TareasMod> lista = objBD.ConsultarTareas(this.comando);

               this.CerrarConexion();

               return lista;
           }
           catch (Exception exc)
           {
               this.CerrarConexion();
               throw exc;
           }
       }

       public List<TareasMod> ConsultarTareaIdTarea(TareasMod objs)
       {
           try
           {
               this.AbrirConexion();

               TareasBD objBD = new TareasBD();

               List<TareasMod> lista = objBD.ConsultarTareaIdTarea(this.comando, objs);

               this.CerrarConexion();

               return lista;
           }
           catch (Exception exc)
           {
               this.CerrarConexion();
               throw exc;
           }
       }
       public TareasMod ConsultarPorceAvance(TareasMod objs)
       {
           try
           {
               this.AbrirConexion();

               TareasBD objBD = new TareasBD();

               TareasMod Tarea = objBD.ConsultarPorcAvance(this.comando, objs);

               this.CerrarConexion();

               return Tarea;
           }
           catch (Exception exc)
           {
               this.CerrarConexion();
               throw exc;
           }
       }

       public List<TareasMod> ConsultarTareaIdUsuario(TareasMod objs)
       {
           try
           {
               this.AbrirConexion();

               TareasBD objBD = new TareasBD();

               List<TareasMod> lista = objBD.ConsultarTareaIdUsuario(this.comando, objs);

               this.CerrarConexion();

               return lista;
           }
           catch (Exception exc)
           {
               this.CerrarConexion();
               throw exc;
           }
       }

       public List<TareasMod> ConsultarTareaIdUsuarioProyecto(TareasMod objs)
       {
           try
           {
               this.AbrirConexion();

               TareasBD objBD = new TareasBD();

               List<TareasMod> lista = objBD.ConsultarTareaIdUsuarioProyecto(this.comando, objs);

               this.CerrarConexion();

               return lista;
           }
           catch (Exception exc)
           {
               this.CerrarConexion();
               throw exc;
           }
       }

       public List<TareasMod> ConsultarTareaIdProyecto(TareasMod objs)
       {
           try
           {
               this.AbrirConexion();

               TareasBD objBD = new TareasBD();

               List<TareasMod> lista = objBD.ConsultarTareaIdProyecto(this.comando, objs);

               this.CerrarConexion();

               return lista;
           }
           catch (Exception exc)
           {
               this.CerrarConexion();
               throw exc;
           }
       }
       public void ActualizarTarea(TareasMod obj)
       {
           try
           {
               this.IniciarTransaccion();

               TareasBD objBD = new TareasBD();

               objBD.ActualizarTarea(this.comando, obj);

               this.ConfirmarTransaccion();
           }
           catch (Exception exc)
           {
               this.DeshacerTransaccion();
               throw exc;
           }
       }

       public void ActualizarPorceAvance(TareasMod obj)
       {
           try
           {
               this.IniciarTransaccion();

               TareasBD objBD = new TareasBD();
               
               objBD.ActualizarPorceAvance(this.comando, obj);
               TareasMod Tarea = new TareasMod();
               Tarea.IdProyecto = obj.IdProyecto;
               Tarea.PorcentajeAvanceTarea=objBD.ConsultarPromedio(this.comando, obj);
               objBD.ActualizarPorceAvanceProyecto(this.comando, Tarea);

               this.ConfirmarTransaccion();
           }
           catch (Exception exc)
           {
               this.DeshacerTransaccion();
               throw exc;
           }
       }
    }
}
